/*!
 * @file skyboxMenager.hh
 * @brief Klasa do malowania skyboxa
 */

#ifndef __MODES_WORLD_SKYBOX_SKYBOXMENAGER_HH
#define __MODES_WORLD_SKYBOX_SKYBOXMENAGER_HH

#include <string>
#include "engine/pawirr.hh"
#include "engine/basic/texture.hh"
#include "engine/basic/color.hh"
#include "engine/basic/shader.hh"

enum skybox_drawMode {skybox_dm_skybox, skybox_dm_all, skybox_dm_sun};

/*!
 * @brief Obiekt do generowania skydoma
 */
class skyboxMenager {
public:
	/*!
	 * @brief Konstruktor. Utworzenie VAO z czaszą + załadowanie shadera.
	 * @return Obiekt
	 */
	skyboxMenager();

	/*!
	 * @brief Malowanie skyboxa
	 */
	void draw(skybox_drawMode dm);

	point3f getSunWindowCoords();

	texture *getGodraysTexture();

private:

	void initSky();
	/*!
	 * @brief VAO
	 */
	GLuint sky_vao;

	/*!
	 * @brief VBO
	 */
	GLuint sky_vbo[2];

	/*!
	 * @brief Program cieniowania
	 */
	shader *sky_shader;

	texture *cloud1;

	texture *godraysTex;

};

#else
class skyboxMenager;
#endif
